#ifndef GY_CHECKBOX_H
#define GY_CHECKBOX_H

#include <QWidget>
#include <QCheckBox>

/**
 * @brief The GY_CheckBox class
 * 继承于QCheckBox,增加ID，组号，状态，模式等属性
 */
class GY_CheckBox : public QCheckBox
{
    Q_OBJECT
public:
    explicit GY_CheckBox(QWidget *parent = nullptr);

    ~GY_CheckBox();

    /**
     * @brief setGY_CheckBoxID    设置复选框ID
     * @param ID    复选框ID   默认为-1
     */
    void setGY_CheckBoxID(const int ID=-1);


    /**
     * @brief getGY_CheckBoxID    获取复选框ID
     * @return     复选框ID
     */
    int getGY_CheckBoxID();


    /**
     * @brief setGY_CheckBoxGroupID   设置组ID
     * @param groupId    组ID，默认为-1
     */
    void setGY_CheckBoxGroupID(const int groupId=-1);

    /**
     * @brief getGY_CheckBoxGroupID    获取组ID
     * @return     复选框所在组ID
     */
    int getGY_CheckBoxGroupID();

    /**
     * @brief setGY_CheckBoxState       设置复选框勾选状态，可以根据需求设置初始是否勾选
     * @param stata     复选框勾选状态  默认为false(未选中)  true为选中
     */
    void setGY_CheckBoxState(bool stata=false);

    /**
     * @brief getGY_CheckBoxState      获取复选框状态
     * @return      true表示选中  false表示未选中
     */
    bool getGY_CheckBoxState();

    /**
     * @brief setGY_CheckBoxChChoiceModel       设置选择模式（单选还是多选）
     * @param model        默认false同组可多选   true同组只能选择一个
     */
    void setGY_CheckBoxChoiceModel(bool model=false);

    /**
     * @brief setGY_CheckBoxJoinGroupState      设置加入组状态
     * @param joinState         加入状态，默认true加入组，false未加入了组
     */
    void setGY_CheckBoxJoinGroupState(bool joinState=true);


signals:


public slots:


private:

    int m_GY_CheckBoxID;///< 复选框ID

    int m_GY_CheckBoxGroupId;///< 复选框组号

    bool m_GY_CheckBoxState;///< 复选框状态  勾选为true  未勾选为false

    bool m_GY_CheckBoxChoiceModel;///< 复选框模式，默认false可多选  true同组只能选择一个(组号为-1时失效)

    bool m_GY_CheckBoxJoinGroupState;///< 加入组状态   true表示加入了组   false表示未加入组
};


#endif // GY_CHECKBOX_H
